#pragma once

#include <base/macro/control.h>

/* 原理是永远取第二个值，如果有参数，那么选的就是0 */
// #define __CHECK(...)                SND(__VA_ARGS__ 0,)
// #define __PROBE(x)                  x, 1,

/* 非括号都是0 */
/* token : "()" -> 1, _ -> 0 */
/* 利用这个机制可以确保最后的返回值 */
#define IS_PAREN(x)		__CHECK(__IS_PAREN x)
#define __IS_PAREN(...)		__PROBE(_)


/* !!!这个不能使用，不安全 */
#define IS_EXISTS(macro)	MIF_ELSE(IS_EMPTY(EXPAND(macro)), 1, __CHECK(__PROBE(macro)))

